<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	/*
	* AA : On personalise la méthode run héritée pour 
	*		inclure nos propres ressources
	*/
	public function run(){
            $logger = new Zend_Log();
            //il faut que le fichier de log existe et soit writable, sinon on redirige vers ....
            if (file_exists(dirname(__FILE__) . '/php.log') && is_writable(dirname(__FILE__) . '/php.log') )
            {
                    $redacteur = new Zend_Log_Writer_Stream(dirname(__FILE__) . '/php.log');
		    ini_set("error_log",dirname(__FILE__) . '/php.log');
            } else {
                    //PC : on redirige vers la sortie erreur, et je sais pas trop où ca va ...
                    $redacteur = new Zend_Log_Writer_Stream('php://stderr');
            }

            $logger = new Zend_Log();
            $logger->addWriter($redacteur);
            Zend_Registry::set('LOG', $logger);

            
            //$acl = new Application_Model_MyAclIni(APPLICATION_PATH.'/configs/acl.ini') ;
            //Zend_Registry::set('ACL', $acl);
			$acl = Zend_Registry::get('ACL');
            
            // Gestion des helpers
            $helper_environment = new Application_Helper_Environment();
            Zend_Controller_Action_HelperBroker::addHelper($helper_environment);
            
            // Gestion des plugins
            $front = Zend_Controller_Front::getInstance();
            $front->registerPlugin(new Application_Plugin_DispatchAuth($acl));
            $front->registerPlugin(new Application_Plugin_DispatchInstaller());

            parent::run();

	}
	
	protected function _init_mylibodcf() {
		Zend_Loader_Autoloader::getInstance()
	             ->registerNamespace('odcf');
	}
	
	protected function _initAcl(){
        //$acl = new Application_Model_MyAclIni(APPLICATION_PATH.'/configs/acl.ini') ;
		$acl = new odcf_acl();
        Zend_Registry::set('ACL', $acl);
    }
	
	/*
	* AA : Ajoute le répertoire helper dans la liste des répertoires à 
	*		prendre en charge par l'application
	*/
	protected function _initAutoload()
	{
		$loader = new Zend_Loader_Autoloader_Resource (array (
														'basePath' => APPLICATION_PATH, 
														'namespace' => 'Application', 
												));

		$loader->addResourceType( 'helper', 'helper', 'Helper')
				->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
		return $loader;
	}
	
	/*
	* AA : Définition du "format" de la vue (HTML5), utf8....
	*/
	protected function _initView(){
            // Initialisation pour le framework
            $this->bootstrap('layout');

            $layout = $this->getResource('layout');
            $view = $layout->getView();

            // On règle la dtd que l'on veux
            $view->doctype('XHTML5'); //PC 23/12/2012, passage en XHTML5 au lieu de HTML5

            // Initialisation automatique des meta-tags
            $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
	}

	protected function _initConstantes(){
		// Mise en constante du préfixe des tables
		// On charge la ressource db pour récupérer un param de config
		$tab_config = $this->getOptions();
		// On récupère le paramètre
		$prefixe = $tab_config['resources']['db']['params']['prefixe'];
		$adapter = isset ($tab_config['resources']['db']['adapter']) ? $tab_config['resources']['db']['adapter'] : "indefini";
		// Mise dans registre
		Zend_Registry::set('TBL_PREFIXE', $prefixe);
		Zend_Registry::set('TBL_ADAPTER', $adapter); //utile pour le test du plugin Installer
	}
	
	protected function _initLocale(){
        
        $locale = new Zend_Locale('fr_FR');
        Zend_Registry::set('Zend_Locale',$locale);
        Zend_Locale::setDefault('fr');
    }
	
	protected function _initNavigation(){
        
        $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
        $container = new Zend_Navigation($config);
        
        $view = $this->bootstrap('layout')->getResource('layout')->getView();
        $view->navigation($container);
        
        //Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole('invite');
        
        $auth = Zend_Auth::getInstance();
        if($auth->hasIdentity()){
				$user = $auth->getStorage()->read() ;
				$role = $user['privilege'] ;
				Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($role);
        }
        
        $acl = Zend_Registry::get('ACL');
        Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl);
    }

}

